package DAO;

import AccesoBD.AccesoBaseDatos;
import Dominio.Persona;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DAOInformacionPersonal {

    private final String TABLA_INFORMACION_PERSONAL = "informacionpersonal";
    private final String COLUMNA_ID_INFORMACION = "id_informacion";
    private final String COLUMNA_NOMBRES = "nombres";
    private final String COLUMNA_APELLIDO_PATERNO = "apaterno";
    private final String COLUMNA_APELLIDO_MATERNO = "amaterno";
    private AccesoBaseDatos acceso = new AccesoBaseDatos();
    private Connection conexion = null;

    public DAOInformacionPersonal() {
        this.conexion = acceso.abrirConexion();
    }

    public int registrarPersona(Persona persona) {
        int clave = -1;
        
        try {                                                    
            String nombres = persona.getNombres();
            String apellidoPaterno = persona.getApellidoPaterno();
            String apellidoMaterno = persona.getApellidoMaterno();            

            Statement sentencia = acceso.crearSentenciaBD(conexion);
            String queryInsertar = "INSERT INTO " + TABLA_INFORMACION_PERSONAL + " (" + COLUMNA_NOMBRES + ", "
                    + COLUMNA_APELLIDO_PATERNO + ", " + COLUMNA_APELLIDO_MATERNO + ") VALUES ('" + nombres + "', '" + apellidoPaterno + "', '"
                    + apellidoMaterno + "');";
            sentencia.executeUpdate(queryInsertar, Statement.RETURN_GENERATED_KEYS);
            
            ResultSet resultSet = sentencia.getGeneratedKeys();                    

            if(resultSet.next()){
                clave = resultSet.getInt(1);
            }                              
        } catch (SQLException ex) {
            System.out.println("Ocurrió un problema al tratar de registrar a la persona");
            ex.printStackTrace();
        }
         return clave;
    }

    public void cerrarConexionAPersonas() {
        acceso.cerrarConexion(conexion);
    }

    public ResultSet buscarInfoPersonal(int clv_infoPersonal) {
        ResultSet resultado = null;

        try {
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            String querySearch = "SELECT * FROM " + TABLA_INFORMACION_PERSONAL + " WHERE " + COLUMNA_ID_INFORMACION + " = '" + clv_infoPersonal + "' ";
            resultado = sentencia.executeQuery(querySearch);

        } catch (SQLException ex) {
            System.out.println("Ocurrió un problema al tratar de buscar la cuenta");
        }

        return resultado;
    }

    public void actualizarInformacionPersonal(int clv_infoPersonal, String nombre, String apellido1, String apellido2) {
        try {
            Statement sentencia = acceso.crearSentenciaBD(conexion);
            String queryUpdate = "UPDATE " + TABLA_INFORMACION_PERSONAL + " SET " + COLUMNA_NOMBRES + " = '" + nombre 
                    + "', " + COLUMNA_APELLIDO_PATERNO + " = '" + apellido1 + "', " 
                    +  COLUMNA_APELLIDO_MATERNO + " = '" + apellido2 + "'"+ 
                   "WHERE " + COLUMNA_ID_INFORMACION + " = '" + clv_infoPersonal + "';";
            sentencia.executeUpdate(queryUpdate);
        } catch (SQLException ex) {
            System.out.println("Ocurrió un problema al tratar de actualizar la informacion personal del alumno");
        }
    }
}
